<!-- 该组件为推荐菜单组件 -->
<template>
  <div class="home-recommond">
    <h2>推荐歌单</h2>
    <div class="wrapper" ref="wrapper">
      <ul class="content" ref="content">
        <li
          v-for="(item, index) in listData"
          :key="index"
          @click="selectItem(item)">
          <!-- v-for 类似增强for循环。item为声明的对象，index即当前项的索引，Key是主要为了标识。 index和key是可选的
          listdata为需要遍历的数组。@click=""为单击事件-->
          <div class="cover">
            <van-image :src="item.cover" radius="1rem" />
            <span>{{ item.listen_num | numFilter(1) }}万</span>
          </div>
          <span>{{ item.title }}</span>
        </li>
      </ul>
    </div>
  </div>
</template>
<script>
import { betterScrollHorizontal } from "../../common/betterScroll.js";
export default {
  data() {
    return {
      listData: [],
    };
  },
  created() {
    this.getListData();
  },

  methods: {
    //获取到推荐歌单的数据
    getListData() {
      this.$request("get", "/recommend/playlist/u").then((res) => {
        console.log(res);
        if (res.result == 100) {
          this.listData = res.data.list;
        }
        //异步数据的一些处理,调用封装的横向滚动方法
        betterScrollHorizontal(
          this,
          this.$refs.wrapper,
          this.$refs.content,
          this.listData.lenght,
          10
        );
      });
    },
    //列表项的单击事件
    selectItem(item) {
      const id = item.content_id; //获取到歌单的id
      // 1.命令的路由，并加上参数，让路由建立url
      // this.$router.push({
      //   name: "singlist", //需要跳转的路由名称
      //   params: {
      //     id: id,
      //   }, //传递的参数
      // });
      //2.带查询参数，结果是
      // this.$router.push({
      //   path: "singlist",
      //   params: {
      //     id: id,
      //   },
      // });
      // 3.通过path手动建立url
      this.$router.push({ path: `/singlist/${id}` });
    },
  },
  //处理播放量的显示格式
  filters: {
    /**
     *@param {*} value 为需要处理的数字
     *@param {*} num 为
     */
    numFilter(value, num) {
      return parseFloat(value / 10000).toFixed(num);
    },
  },
};
</script>
<style scoped>
.cover > span {
  position: absolute;
  right: 0;
  bottom: 0.3rem;
  color: white;
  font-size: 14px;
  border-radius: 1rem;
  display: inline-block;
  background: rgba(0, 0, 0, 0.4);
}
.cover {
  position: relative;
}
.wrapper {
  width: 100%;
  overflow: hidden;
}
ul.content {
  width: calc(12 * 10rem);
}
ul.content li {
  display: inline-block;
  width: 10rem;
  vertical-align: top;
}
ul.content li * {
  margin: 0.1rem;
}
ul.content li > span {
  font-size: 0.8rem;
  color: #54493b;
}
</style>